"""
@author: 方杰
@file: 三创购物系统.py
@time: 2023/3/26 21:52
"""

import json

# 用于储存用户信息
users = {}

# 商品信息
goods = {
    'F00001': {'name': '苹果', 'price': 1.2},
    'F00002': {'name': '香蕉', 'price': 5.5}
}
#判断是否登录成功的标志
flag = 0
# 购物记录
lst_shopping = []

# 定义一个注册账号的函数
def logon():
    while 1:
        username = input("请输入用户名（输入exit退出）：")

        if username == exit:
            print("你已成功退出三乐购物系统")
            break
        if username in users:
            print("你注册的账号已存在，请重新注册")
            continue
        passwd = input("请输入密码：")
        users[username] = passwd
        print("成功注册该账号")
        #将用户数据固化
        users_json = json.dumps(users)  #将字典转换为字符串
        fp = open("users_info.txt", "a")# "a"：追加模式，打开文件后进行追加写入操作
        fp.write(users_json)#将字符串写入磁盘
        fp.close()
        break



# 定义一个登录的函数
def sign_in():
    while 1:
        username = input('请输入用户名:')
        passwd = input("请输入密码：")
        # fp = open("users_info.txt")
        # d1_users = fp.read()
        # fp.close()
        # users1 = json.loads(d1_users)
        if (username in users) and users[username] == passwd:
            print("成功登录三乐购物系统")
            break
        else:
            print("用户名或密码输入错误，请重新输入")


# 进入购物系统
def shopping():
    balance = float(input("请输入你的购物预算:"))
    while 1:
        print("购物系统中有以下商品：")
        for number, message in goods.items():  #number为商品编号
            print(f"{number}\t{message['name']}\t{message['price']}")
        number1 = input("请输入购买商品的编号（输入exit退出）：")
        if number1 == "exit":
            print(f"你已完成购物，已购的商品：{lst_shopping}, 余额为：{balance}")
            break
        if number1 not in goods:
            print("你输入的商品编号错误。请重新输入")
            continue
        price1 = goods[number1]['price']
        if balance >= price1:
            balance -= price1  # 扣除购买商品所花的钱
            lst_shopping.append(goods[number1])
            print(f'已成功购买')
            print(f'你已经购买的商品：{lst_shopping}')
            print(f'你的余额为：{balance}')
        else:
            print(f'你的余额为：{balance},余额无法购买此商品')


    # 将消费数据固化
    users_json = json.dumps(users)  # 将字典转换为字符串
    fp = open("users_info.txt", "a")  # "a"：追加模式，打开文件后进行追加写入操作
    fp.write(users_json)  # 将字符串写入磁盘
    fp.close()



while 1:
    print("1.注册账号\t\t2.登录\t\t3.退出三乐购物系统")
    choice = input("请输入你的选择：")
    if choice == "1":
        logon()
    elif choice == "2":
            sign_in()
            if flag == 0:
                shopping()
    elif choice == "3":
        break
    else:
        print("你的输入有误，请重新输入")
